home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / ewl / ewl_widget.h < prev    next >
C/C++ Source or Header  |  2006-01-09  |  8KB  |  216 lines

  1. #ifndef __EWL_WIDGET_H__
  2. #define __EWL_WIDGET_H__
  3.  
  4. /**
  5.  * @file ewl_widget.h
  6.  * @defgroup Ewl_Widget Widget: The Parent Widget Class Common to All Widgets
  7.  * @brief Defines the Ewl_Widget class and it's accessor/modifier functions.
  8.  *
  9.  * The Ewl_Widget extends the Ewl_Object to provide the basic facilities
  10.  * necessary for widgets to interact with the end user. This includes basic
  11.  * callbacks for input events, window information changes, and drawing to the
  12.  * display.
  13.  *
  14.  * @{
  15.  */
  16.  
  17. typedef struct Ewl_Attach_List Ewl_Attach_List;
  18. struct Ewl_Attach_List
  19. {
  20.     void **list;
  21.     unsigned int direct:1;
  22.     unsigned int len:31;
  23. };
  24.  
  25. typedef struct Ewl_Pair Ewl_Pair;
  26. #define EWL_PAIR(p) ((Ewl_Pair *)p)
  27. struct Ewl_Pair
  28. {
  29.     const char *key;
  30.     char *value;
  31. };
  32.  
  33. typedef struct Ewl_Pair_List Ewl_Pair_List;
  34. struct Ewl_Pair_List
  35. {
  36.     Ewl_Pair **list;
  37.     unsigned int direct:1;
  38.     unsigned int len:31;
  39. };
  40.  
  41. /**
  42.  * Callback chain container a list and bitmask of chain properties.
  43.  */
  44. typedef struct Ewl_Callback_Chain Ewl_Callback_Chain;
  45.  
  46. struct Ewl_Callback_Chain
  47. {
  48.     void **list;
  49.     unsigned short int mask;
  50.     unsigned short int len;
  51.     unsigned short int index;
  52. };
  53.  
  54. typedef struct Ewl_Color_Set Ewl_Color_Set;
  55.  
  56. struct Ewl_Color_Set
  57. {
  58.     int r, g, b, a;
  59. };
  60.  
  61. typedef void *(*Ewl_Widget_Drag)(void);
  62.  
  63. /**
  64.  * The class that all widgets should inherit. Provides reference to a parent
  65.  * widget/container, callbacks, and appearance information.
  66.  */
  67. typedef struct Ewl_Widget Ewl_Widget;
  68.  
  69. /**
  70.  * @def EWL_WIDGET(widget)
  71.  * @brief Typecast a pointer to an Ewl_Widget pointer.
  72.  */
  73. #define EWL_WIDGET(widget) ((Ewl_Widget *) widget)
  74.  
  75. /**
  76.  * @class Ewl_Widget
  77.  * The class inheriting from Ewl_Object that provides appearance, parent, and
  78.  * callback capabilities.
  79.  */
  80. struct Ewl_Widget
  81. {
  82.     Ewl_Object       object; /**< Inherit the base Object class */
  83.     Ewl_Widget      *parent; /**< The parent widget, actually a container */
  84.  
  85.     Ewl_Callback_Chain callbacks[EWL_CALLBACK_MAX]; /**< Callback chain array */
  86.     Ewl_Attach_List *attach;       /**< List of attachments on the widget */
  87.  
  88.     Evas_Object     *fx_clip_box;  /**< Clipping rectangle of widget */
  89.  
  90.     Evas_Object     *theme_object; /**< Appearance shown on canvas */
  91.     const char      *bit_path;     /**< Path to the file for loading */
  92.     const char      *bit_group;    /**< Group in theme to use */
  93.     const char      *bit_state;    /**< State of the appearance */
  94.     const char      *appearance;   /**< Key to lookup appearance in theme */
  95.     const char      *inheritance;  /**< Inheritance of path widget */
  96.     int              layer;        /**< Current layer of widget on canvas */
  97.  
  98.     Ecore_Hash      *theme;        /**< Overriding theme settings */
  99.     Ewl_Pair_List    theme_text;   /**< Overriding text in theme */
  100.     Ecore_Hash      *data;         /**< Arbitrary data attached to widget */
  101. };
  102.  
  103. int             ewl_widget_init(Ewl_Widget * w);
  104.  
  105. void            ewl_widget_name_set(Ewl_Widget * w, const char *name);
  106. const char *    ewl_widget_name_get(Ewl_Widget * w);
  107. Ewl_Widget *    ewl_widget_name_find(const char *name);
  108.  
  109. void            ewl_widget_reparent(Ewl_Widget * widget);
  110. void            ewl_widget_realize(Ewl_Widget * widget);
  111. void            ewl_widget_unrealize(Ewl_Widget * w);
  112. void            ewl_widget_reveal(Ewl_Widget *w);
  113. void            ewl_widget_obscure(Ewl_Widget *w);
  114. void            ewl_widget_show(Ewl_Widget * widget);
  115. void            ewl_widget_hide(Ewl_Widget * widget);
  116. void            ewl_widget_destroy(Ewl_Widget * widget);
  117. void            ewl_widget_configure(Ewl_Widget * widget);
  118.  
  119. void            ewl_widget_theme_update(Ewl_Widget * w);
  120.  
  121. void            ewl_widget_data_set(Ewl_Widget * w, void *k, void *v);
  122. void           *ewl_widget_data_del(Ewl_Widget * w, void *k);
  123. void           *ewl_widget_data_get(Ewl_Widget * w, void *k);
  124.  
  125. void            ewl_widget_state_set(Ewl_Widget * w, char *state);
  126.  
  127. void            ewl_widget_appearance_set(Ewl_Widget * w, char *appearance);
  128. char           *ewl_widget_appearance_get(Ewl_Widget * w);
  129. char           *ewl_widget_appearance_path_get(Ewl_Widget * w);
  130. void            ewl_widget_appearance_part_text_set(Ewl_Widget * w, char *part,
  131.                            char *text);     
  132. void            ewl_widget_appearance_text_set(Ewl_Widget * w, char *text);
  133.  
  134. void            ewl_widget_inherit(Ewl_Widget *widget, char *type);
  135.  
  136. unsigned int    ewl_widget_type_is(Ewl_Widget *widget, char *type);
  137. unsigned int    ewl_widget_onscreen_is(Ewl_Widget *widget);
  138.  
  139. void            ewl_widget_parent_set(Ewl_Widget * w, Ewl_Widget * p);
  140.  
  141. void            ewl_widget_enable(Ewl_Widget * w);
  142. void            ewl_widget_disable(Ewl_Widget * w);
  143.  
  144. void            ewl_widget_print_tree(Ewl_Widget *w);
  145. void            ewl_widget_print(Ewl_Widget *w);
  146.  
  147. int             ewl_widget_layer_sum_get(Ewl_Widget *w);
  148. void            ewl_widget_layer_set(Ewl_Widget *w, int layer);
  149. int             ewl_widget_layer_get(Ewl_Widget *w);
  150.  
  151. void            ewl_widget_internal_set(Ewl_Widget *w, unsigned int val);
  152. unsigned int    ewl_widget_internal_is(Ewl_Widget *w);
  153.  
  154. void            ewl_widget_clipped_set(Ewl_Widget *w, unsigned int val);
  155. unsigned int    ewl_widget_clipped_is(Ewl_Widget *w);
  156.  
  157. void            ewl_widget_focus_send(Ewl_Widget *w);
  158. Ewl_Widget     *ewl_widget_focused_get(void);
  159.  
  160. void            ewl_widget_tab_order_append(Ewl_Widget *w);
  161. void            ewl_widget_tab_order_prepend(Ewl_Widget *w);
  162. void            ewl_widget_tab_order_insert(Ewl_Widget *w, unsigned int idx);
  163. void        ewl_widget_tab_order_insert_before(Ewl_Widget *w, Ewl_Widget *before);
  164. void        ewl_widget_tab_order_insert_after(Ewl_Widget *w, Ewl_Widget *after);
  165. void         ewl_widget_tab_order_remove(Ewl_Widget *w);
  166.  
  167. void        ewl_widget_focusable_set(Ewl_Widget *w, unsigned int val);
  168. unsigned int    ewl_widget_focusable_get(Ewl_Widget *w);
  169.  
  170. void        ewl_widget_ignore_focus_change_set(Ewl_Widget *w, unsigned int val);
  171. unsigned int    ewl_widget_ignore_focus_change_get(Ewl_Widget *w);
  172.  
  173. void            ewl_widget_color_set(Ewl_Widget *w, int r, int g, int b, int a);
  174. void            ewl_widget_color_get(Ewl_Widget *w, int *r, int *g, int *b, int *a);
  175.  
  176. int             ewl_widget_parent_of(Ewl_Widget *c, Ewl_Widget *w);
  177.  
  178. void        ewl_widget_draggable_set(Ewl_Widget* w, unsigned int val, Ewl_Widget_Drag cb);
  179. Ewl_Widget     *ewl_widget_drag_candidate_get(void);
  180. void         ewl_widget_dnd_reset(void);
  181.  
  182. /**
  183.  * @def LAYER(w)
  184.  * Used to retrieve the layer of a widget.
  185.  */
  186. #define LAYER(w) (EWL_WIDGET(w)->layer)
  187.  
  188. /*
  189.  * Internally used callbacks, override at your own risk.
  190.  */
  191. void ewl_widget_show_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  192. void ewl_widget_hide_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  193. void ewl_widget_reveal_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  194. void ewl_widget_obscure_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  195. void ewl_widget_realize_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  196. void ewl_widget_unrealize_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  197. void ewl_widget_configure_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  198. void ewl_widget_destroy_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  199. void ewl_widget_reparent_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  200. void ewl_widget_enable_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  201. void ewl_widget_disable_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  202. void ewl_widget_focus_in_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  203. void ewl_widget_focus_out_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  204. void ewl_widget_mouse_in_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  205. void ewl_widget_mouse_out_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  206. void ewl_widget_mouse_down_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  207. void ewl_widget_mouse_up_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  208. void ewl_widget_child_destroy_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  209. void ewl_widget_mouse_move_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  210.  
  211. /**
  212.  * @}
  213.  */
  214.  
  215. #endif                /* __EWL_WIDGET_H__ */
  216.